.TH std::multiset::merge 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::multiset::merge \- std::multiset::merge

.SH Synopsis
   template< class C2 >                                      \fB(1)\fP \fI(since C++17)\fP
   void merge( std::set<Key, C2, Allocator>& source );
   template< class C2 >                                      \fB(2)\fP \fI(since C++17)\fP
   void merge( std::set<Key, C2, Allocator>&& source );
   template< class C2 >                                      \fB(3)\fP \fI(since C++17)\fP
   void merge( std::multiset<Key, C2, Allocator>& source );
   template< class C2 >                                      \fB(4)\fP \fI(since C++17)\fP
   void merge( std::multiset<Key, C2, Allocator>&& source );

   Attempts to extract ("splice") each element in source and insert it into *this using
   the comparison object of *this.

   No elements are copied or moved, only the internal pointers of the container nodes
   are repointed. All pointers and references to the transferred elements remain valid,
   but now refer into *this, not into source.

   The behavior is undefined if get_allocator() != source.get_allocator().

.SH Parameters

   source - compatible container to transfer the nodes from

.SH Return value

   \fI(none)\fP

.SH Exceptions

   Does not throw unless comparison throws.

.SH Complexity

   N * log(size() + N)), where N is source.size().

.SH Example


// Run this code

 #include <iostream>
 #include <set>

 // print out a container
 template<class Os, class K>
 Os& operator<<(Os& os, const std::multiset<K>& v)
 {
     os << '[' << v.size() << "] {";
     bool o{};
     for (const auto& e : v)
         os << (o ? ", " : (o = 1, " ")) << e;
     return os << " }\\n";
 }

 int main()
 {
     std::multiset<char>
         p{'C', 'B', 'B', 'A'},
         q{'E', 'D', 'E', 'C'};

     std::cout << "p: " << p << "q: " << q;

     p.merge(q);

     std::cout << "p.merge(q);\\n" << "p: " << p << "q: " << q;
 }

.SH Output:

 p: [4] { A, B, B, C }
 q: [4] { C, D, E, E }
 p.merge(q);
 p: [8] { A, B, B, C, C, D, E, E }
 q: [0] { }

.SH See also

   extract extracts nodes from the container
   \fI(C++17)\fP \fI(public member function)\fP
           inserts elements
   insert  or nodes
           \fI(since C++17)\fP
           \fI(public member function)\fP
